package org.spia.files;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import org.spia.VO.ContenedorVO;

public class CargaArchivo {
	
	public void CargaArchivo(){
		
	}
	private static boolean isNumeric(String cadena) {
		boolean estado = false;
		// Integer.parseInt(cadena);
		if (cadena.equals("0") || cadena.equals("1") || cadena.equals("2")
				|| cadena.equals("3") || cadena.equals("4")
				|| cadena.equals("5") || cadena.equals("6")
				|| cadena.equals("7") || cadena.equals("8")
				|| cadena.equals("9")) {
			estado = true;
		}
		return estado;

	}
	public static void main(String[] arg){
		try {
			File archivo = null;
			archivo = new File("D:\\workspaces\\edi\\baplie_sample.edi");
		//	CompararDosEDI(archivo,archivo);
		} catch (Exception e) {
			
		}
	}
/*
	public static Collection<Collection<String>> CompararDosEDI(File archivo1,File archivo2) {
	//	File archivo = null;
		FileReader fr = null;
		BufferedReader br = null;
		
		FileReader fr2 = null;
		BufferedReader br2 = null;
		Collection<Collection<String>> resultadoComparacion = new ArrayList();
		try {		
			fr = new FileReader(archivo1);
			br = new BufferedReader(fr);			
			fr2 = new FileReader(archivo2);
			br2 = new BufferedReader(fr2);
			String lineaAux = "";
			// Lectura del fichero
			String linea;
			while ((linea = br.readLine()) != null) {
				lineaAux = lineaAux + linea;
			}
			Collection<String> col1 = CargaArchivo.obtenerContainer(lineaAux);
			lineaAux = "";
			// Lectura del fichero2
			linea= "";
			while ((linea = br2.readLine()) != null) {
				lineaAux = lineaAux + linea;
			}
			Collection<String> col2 = CargaArchivo.obtenerContainer(lineaAux);	
			Collection<String> diferenciacol = new ArrayList<String>();
			String contenedor1="";
			String contenedor2="";
			Iterator<String> itcol1=col1.iterator();
			Iterator<String> itcol2=col2.iterator();
			Collection<String> Contenedores2NoExistenEdi1=new ArrayList<String>();
			Collection<String> Contenedores1NoExistenEdi2=new ArrayList<String>();
			while(itcol1.hasNext()){
				contenedor1=itcol1.next();
				if(!col2.contains(contenedor1))
					{
						Contenedores2NoExistenEdi1.add(contenedor1);
						diferenciacol.add(contenedor1);
					}
				
			}
			while(itcol2.hasNext()){
				contenedor2=itcol2.next();
				if(!col1.contains(contenedor2))
					{
						Contenedores1NoExistenEdi2.add(contenedor2);
						diferenciacol.add(contenedor2);
					}
				
			}
			resultadoComparacion.add(diferenciacol);
			resultadoComparacion.add(col1);
			resultadoComparacion.add(col2);
		} catch (Exception e) {
			return null;
		} finally {
			try {
				if (null != fr) {
					fr.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return resultadoComparacion;
	}
*/
	public static Collection<String> obtenerIdContainer(String cadenaOrinal) {
		Collection<String> col = new ArrayList<String>();
		String cadenaOrinalAux = cadenaOrinal;
		int i = 0;
		int max = cadenaOrinal.length();
		String carac = "";
		while (i < max) {
			carac = Character.toString(cadenaOrinalAux.charAt(i));
			if (isNumeric(carac)) {
				carac = Character.toString(cadenaOrinalAux.charAt(i + 1));
				if (isNumeric(carac)) {
					carac = Character.toString(cadenaOrinalAux.charAt(i + 2));
					if (isNumeric(carac)) {
						carac = Character.toString(cadenaOrinalAux
								.charAt(i + 3));
						if (isNumeric(carac)) {
							carac = Character.toString(cadenaOrinalAux
									.charAt(i + 4));
							if (isNumeric(carac)) {
								carac = Character.toString(cadenaOrinalAux
										.charAt(i + 5));
								if (isNumeric(carac)) {
									carac = Character.toString(cadenaOrinalAux
											.charAt(i + 6));
									if (isNumeric(carac)
											&& (Character
													.toString(
															cadenaOrinalAux
																	.charAt(i - 1))
													.toUpperCase().equals("U")
													|| Character
															.toString(
																	cadenaOrinalAux
																			.charAt(i - 1))
															.toUpperCase()
															.equals("J") || Character
													.toString(
															cadenaOrinalAux
																	.charAt(i - 1))
													.toUpperCase().equals("Z"))) {
										String cadena=cadenaOrinal.substring(i - 4, i + 7);
										System.out.println(cadenaOrinal.substring(i - 4, i + 7));
										col.add(cadena);
										i = i + 6;
									}
								}
							}
						}
					}
				}
			}
			i++;
		}
		return col;
	}
	public Collection<String> crearObjetosContenedores(Collection<String> idContenedorres){
		return null;
		
	}
	public static String[][] ObtenerContenedoresArchivos(File archivo1,File archivo2) {
	//	File archivo = null;
		FileReader fr = null;
		BufferedReader br = null;
		ContenedorVO contenedor1=null;
		FileReader fr2 = null;
		BufferedReader br2 = null;
		Collection<Collection<ContenedorVO>> resultadoComparacion = new ArrayList();
		String[][] matriz=new String[2][24];
		try {		
			fr = new FileReader(archivo1);
			br = new BufferedReader(fr);			
			fr2 = new FileReader(archivo2);
			br2 = new BufferedReader(fr2);
			String lineaAux = "";
			// Lectura del fichero
			String linea;
			while ((linea = br.readLine()) != null) {
				lineaAux = lineaAux + linea;
			}
			Collection<String> col1 = CargaArchivo.obtenerIdContainer(lineaAux);
			lineaAux = "";
			// Lectura del fichero2
			linea= "";
			while ((linea = br2.readLine()) != null) {
				lineaAux = lineaAux + linea;
			}
			Collection<String> col2 = CargaArchivo.obtenerIdContainer(lineaAux);	
			Collection<String> diferenciacol = new ArrayList<String>();
			String idContenedor1="";
			String contenedor2="";
			Iterator<String> itcol1=col1.iterator();
			Iterator<String> itcol2=col2.iterator();
		//	String[] ContenedoresEDI1=new ArrayList<ContenedorVO>();
			Collection<ContenedorVO> ContenedoresEDI2=new ArrayList<ContenedorVO>();
			while(itcol1.hasNext()){
				idContenedor1=itcol1.next();
				contenedor1=new ContenedorVO();
				contenedor1.setIdContenedor(idContenedor1);
			//	ContenedoresEDI1.add(contenedor1);
				matriz[1][1]=idContenedor1;
				
			}
			while(itcol2.hasNext()){
				contenedor2=itcol2.next();
				if(!col1.contains(contenedor2))
					{
					//	Contenedores1NoExistenEdi2.add(contenedor2);
					//	diferenciacol.add(contenedor2);
					}
				
			}
		//	resultadoComparacion.add(ContenedoresEDI1);
		//	resultadoComparacion.add(col1);
		//	resultadoComparacion.add(col2);
		} catch (Exception e) {
			return null;
		} finally {
			try {
				if (null != fr) {
					fr.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return matriz;
	}
}
